#pragma once
#include "Binding/BoundExpression.hpp"
#include "Syntax/Object/Object.hpp"
#include "Symbols/VariableSymbol.hpp"

#include <string>

class BoundVariableExpression : public BoundExpression
{
public:
    SharedVariableSymbol Variable;

public:
    BoundVariableExpression(SharedVariableSymbol variable) : BoundExpression(BoundNodeKind::VariableExpression, variable->GetType()), Variable(variable) {}

public:
    virtual std::vector<std::tuple<std::string, std::string>> GetProperties() override
    {
        return {{"Type", Variable->GetType()->ToString()}, {"Name", Variable->GetName()}};
    }
};
